class Watcher {
    constructor(vm,key,cb) {
        this.vm = vm
        //data中的属性名称
        this.key = key 
        //回掉函数负责更新视图
        this.cb = cb

        //把watcher 对象记录到Dep类的静态属性target
        Dep.target = this
        //触发get方法 在get方法中调用addSub
        this.oldValue = vm[key]        
        //防止后面重复添加
        Dep.target = null 
    }

    //当数据发生变化的时候 更新视图
    update(){
        let newValue = this.vm[this.key]
        if( this.oldValue === newValue){
            return
        }

        this.cb(newValue)
    }
}